import 'dart:ui';

import 'package:flutter_09_game/utils/log/utils_log.dart';
import 'package:flutter_09_game/utils/shared/shared_export.dart';
import 'package:get/get.dart';

// 语言管理器 - 单例模式
class AppLanguage {
  // 单例实例
  static AppLanguage? _instance;

  static AppLanguage get instance {
    _instance ??= AppLanguage._internal();
    return _instance!;
  }

  // 私有构造函数
  AppLanguage._internal() {
    _loadSavedLanguage();
  }

  // 支持的语言列表
  static const List<Locale> supportedLocales = [
    Locale('zh', 'CN'), // 简体
    Locale('zh', 'TW'), // 繁体
  ];

  // // 语言名称映射
  // static const Map<String, String> languageNames = {
  //   'zh_CN': '简体中文',
  //   'zh_TW': '繁体中文',
  // };

  // // 语言显示名称映射
  // static const Map<String, String> languageDisplayNames = {
  //   'zh_CN': '简体',
  //   'zh_TW': '繁體',
  //   // Locale('zh', 'HK')
  //   // 'en_US': 'English',
  // };

  // 默认语言
  static Locale defaultLocale = Get.locale ?? const Locale('zh', 'CN');

  // 获取回退语言
  static Locale getFallbackLocale() {
    return const Locale('zh', 'CN');
  }

// 当前语言
// Locale _currentLocale = defaultLocale;

// Locale get currentLocale => _currentLocale;


//   // 语言名称映射
//   static const Map<String, String> languageNames = {
//     'zh_CN': '简体中文',
//     'en_US': 'English',
//   };
//
//   // 语言显示名称映射
//   static const Map<String, String> languageDisplayNames = {
//     'zh_CN': '中文',
//     'en_US': 'English',
//   };
//
// 加载保存的语言设置
  void _loadSavedLanguage() {
    String? savedLanguage =
    SharedStorage().prefs.getString(SharedKey.appLanguage);
    if (savedLanguage != null) {
      Locale? locale = _parseLocale(savedLanguage);
      if (locale != null && AppLanguage.supportedLocales.contains(locale)) {
        AppLanguage.defaultLocale = locale;
      }
    }
  }

//
//   // 获取系统语言
//   Locale _getSystemLocale() {
//     Locale systemLocale = Get.deviceLocale ?? defaultLocale;
//
//     // 匹配支持的语言
//     for (Locale supportedLocale in supportedLocales) {
//       if (systemLocale.languageCode == supportedLocale.languageCode) {
//         if (systemLocale.countryCode == supportedLocale.countryCode) {
//           return supportedLocale;
//         }
//       }
//     }
//
//     // 如果没有完全匹配，尝试匹配语言代码
//     for (Locale supportedLocale in supportedLocales) {
//       if (systemLocale.languageCode == supportedLocale.languageCode) {
//         return supportedLocale;
//       }
//     }
//
//     return defaultLocale;
//   }
//
//   // 解析语言字符串为Locale
  Locale? _parseLocale(String localeString) {
    List<String> parts = localeString.split('_');
    if (parts.length == 2) {
      return Locale(parts[0], parts[1]);
    } else if (parts.length == 1) {
      return Locale(parts[0]);
    }
    return null;
  }

//
//   // 切换语言
static  Future<void> changeLanguage(Locale locale) async {
    if (!AppLanguage.supportedLocales.contains(locale)) {
      clog('不支持的语言: ${locale.toString()}');
      return;
    }

    // try {
    // _currentLocale = locale;
    // AppLanguage.defaultLocale = locale;
    Get.updateLocale(locale);
    // Get.locale
    // 保存语言设置
    String localeString = '${locale.languageCode}_${locale.countryCode}';
    await SharedStorage().prefs.setString(SharedKey.appLanguage, localeString);

    clog('语言已切换为: ${locale.toString()}');
    // } catch (e) {
    //   print('切换语言失败: $e');
    // }
  }
}
//
//   // 切换为中文
//   Future<void> changeToChina() async {
//     await changeLanguage(const Locale('zh', 'CN'));
//   }
//
//   // 切换为英文
//   Future<void> changeToEnglish() async {
//     await changeLanguage(const Locale('en', 'US'));
//   }
//
//   // 获取当前语言代码
//   String getCurrentLanguageCode() {
//     return '${_currentLocale.languageCode}_${_currentLocale.countryCode}';
//   }
//
//   // 获取语言名称
//   String getLanguageName(Locale locale) {
//     String localeString = '${locale.languageCode}_${locale.countryCode}';
//     return languageNames[localeString] ?? locale.toString();
//   }
//
//   // 获取语言显示名称
//   String getLanguageDisplayName(Locale locale) {
//     String localeString = '${locale.languageCode}_${locale.countryCode}';
//     return languageDisplayNames[localeString] ?? locale.toString();
//   }
//
//   // 获取当前语言名称
//   String getCurrentLanguageName() {
//     return getLanguageName(_currentLocale);
//   }
//
//   // 获取当前语言显示名称
//   String getCurrentLanguageDisplayName() {
//     return getLanguageDisplayName(_currentLocale);
//   }
//
//   // 是否是中文
//   bool isChina() {
//     return _currentLocale.languageCode == 'zh';
//   }
//
//   // 是否是英文
//   bool isEnglish() {
//     return _currentLocale.languageCode == 'en';
//   }
//
//   // 获取所有支持的语言信息
//   List<Map<String, dynamic>> getSupportedLanguages() {
//     return supportedLocales.map((locale) {
//       String localeString = '${locale.languageCode}_${locale.countryCode}';
//       return {
//         'locale': locale,
//         'code': localeString,
//         'name': languageNames[localeString] ?? locale.toString(),
//         'displayName': languageDisplayNames[localeString] ?? locale.toString(),
//         'isSelected': _currentLocale == locale,
//       };
//     }).toList();
//   }
//
//   // 根据语言代码获取Locale
//   static Locale? getLocaleByCode(String code) {
//     for (Locale locale in supportedLocales) {
//       String localeCode = '${locale.languageCode}_${locale.countryCode}';
//       if (localeCode == code) {
//         return locale;
//       }
//     }
//     return null;
//   }
//
//   // 判断是否支持该语言
//   static bool isSupported(Locale locale) {
//     return supportedLocales.contains(locale);
//   }
//
//   // 获取回退语言
//   static Locale getFallbackLocale() {
//     return defaultLocale;
//   }
// }
//
// // 语言选择项模型
// class LanguageOption {
//   final Locale locale;
//   final String code;
//   final String name;
//   final String displayName;
//   final bool isSelected;
//
//   LanguageOption({
//     required this.locale,
//     required this.code,
//     required this.name,
//     required this.displayName,
//     required this.isSelected,
//   });
//
//   factory LanguageOption.fromMap(Map<String, dynamic> map) {
//     return LanguageOption(
//       locale: map['locale'],
//       code: map['code'],
//       name: map['name'],
//       displayName: map['displayName'],
//       isSelected: map['isSelected'],
//     );
//   }
// }
//
// // 语言管理器初始化
// class LanguageService {
//   static void init() {
//     // 初始化语言管理器单例
//     AppLanguage.instance;
//   }
// }
